package pe.edu.upc.dsd.whereeat.domain;

import java.io.Serializable;
import javax.persistence.*;
import javax.xml.bind.annotation.XmlRootElement;

import pe.edu.upc.dsd.whereeat.base.domain.BaseEntity;

import java.util.Date;
import java.util.List;

/**
 * The persistent class for the usuario database table.
 * 
 */
@Entity
@Table(name = "usuario")
@XmlRootElement
public class Usuario extends BaseEntity implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	@Column(unique = true, nullable = false)
	private int codigo;

	@Column(length = 80)
	private String apellidos;

	@Column(length = 40)
	private String correo;

	@Column(length = 1)
	private String estado;

	@Temporal(TemporalType.TIMESTAMP)
	private Date fechaRegistro;

	@Column(length = 60)
	private String nombres;

	@Column(length = 30)
	private String pwd;

	@Column(nullable = false)
	private int tipoUsuario;
	
	// bi-directional many-to-one association to Calificacion
	@OneToMany(mappedBy = "usuario",cascade={CascadeType.ALL},fetch=FetchType.EAGER)
	private List<Calificacion> calificacions;

	public Usuario() {
	}

	public Usuario(String nombres, String apellidos, String pwd, String correo,String optionsCategory) {
		// TODO Auto-generated constructor stub
		this.nombres = nombres;
		this.apellidos = apellidos;
		this.pwd = pwd;
		this.correo = correo;
		this.tipoUsuario = new Integer(optionsCategory);
		this.estado = "a";
		this.fechaRegistro = new Date();
	}

	public Usuario(String correo, String password) {
		
		this.correo=correo;
		this.pwd=password;
		
	}

	public int getCodigo() {
		return this.codigo;
	}

	public void setCodigo(int codigo) {
		this.codigo = codigo;
	}

	public String getApellidos() {
		return this.apellidos;
	}

	public void setApellidos(String apellidos) {
		this.apellidos = apellidos;
	}

	public String getCorreo() {
		return this.correo;
	}

	public void setCorreo(String correo) {
		this.correo = correo;
	}

	public String getEstado() {
		return this.estado;
	}

	public void setEstado(String estado) {
		this.estado = estado;
	}

	public Date getFechaRegistro() {
		return this.fechaRegistro;
	}

	public void setFechaRegistro(Date fechaRegistro) {
		this.fechaRegistro = fechaRegistro;
	}

	public String getNombres() {
		return this.nombres;
	}

	public void setNombres(String nombres) {
		this.nombres = nombres;
	}

	public String getPwd() {
		return this.pwd;
	}

	public void setPwd(String pwd) {
		this.pwd = pwd;
	}

	public List<Calificacion> getCalificacions() {
		return this.calificacions;
	}

	public void setCalificacions(List<Calificacion> calificacions) {
		this.calificacions = calificacions;
	}

	public int getTipoUsuario() {
		return tipoUsuario;
	}

	public void setTipoUsuario(int tipoUsuario) {
		this.tipoUsuario = tipoUsuario;
	}

}